package com.mall.server.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mall.commons.utils.PageUtils;
import com.mall.dubbo.api.PmsProductAttributeApi;
import com.mall.dubbo.api.PmsProductAttributeCategoryApi;
import com.tanhua.model.domain.PmsProductAttribute;
import com.tanhua.model.domain.PmsProductAttributeCategory;
import com.tanhua.model.dto.fuDto.PageDto;
import com.tanhua.model.vo.PageVo;
import com.tanhua.model.vo.ProductAttributeCategoryListWithAttrVo;
import com.tanhua.model.vo.ProductAttributeProductVo;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ProductAttributeService {

    @DubboReference
    private PmsProductAttributeApi pmsProductAttributeApi;

    @DubboReference
    private PmsProductAttributeCategoryApi pmsProductAttributeCategoryApi;


    /**
     * 分页获取所有商品属性分类
     * @param pageDto
     * @return
     */
    public PageVo categoryList(PageDto pageDto) {

        Page<PmsProductAttributeCategory> pmsProductAttributeCategoryPage = new Page<>(pageDto.getPageNum(), pageDto.getPageSize());
        return  PageUtils.getPageVo(pmsProductAttributeCategoryApi.categoryList(pmsProductAttributeCategoryPage));

    }

    /**
     * 根据分类查询属性列表或参数列表
     * @param cid  传来的cid 就是id
     * @param type
     * @param pageNum
     * @param pageSize
     * @return
     */
    public PageVo findTypeList(Integer cid, Integer type, Integer pageNum, Integer pageSize) {
        Page<PmsProductAttribute> page = new Page<>(pageNum, pageSize);
        Page pg = pmsProductAttributeApi.findTypeList(cid,type,page);
        return PageUtils.getPageVo(pg);
    }


    /**
     * 查询单个商品属性
     * @param id
     * @return
     */
    public PmsProductAttribute findById(Integer id) {
       return pmsProductAttributeApi.findById(id);
    }


    /**
     * 修改商品属性信息
     * @param pmsProductAttributeParam
     */
    public void updateById(PmsProductAttribute pmsProductAttributeParam) {
        pmsProductAttributeApi.updateById(pmsProductAttributeParam);
    }

    /**
     * 添加商品属性信息
     * @param pmsProductAttribute
     * @return
     */
    public void save(PmsProductAttribute pmsProductAttribute) {
        pmsProductAttributeApi.save(pmsProductAttribute);
    }


    /**
     * 批量删除商品属性
     * @param ids
     * @return
     */
    public void deleteByIds(Integer[] ids) {
        pmsProductAttributeApi.deleteByIds(ids);
    }


    /**
     * 添加商品属性分类
     * @return
     */
    public void categorySave(String name) {
        pmsProductAttributeApi.categorySave(name);

    }


    /**
     * 修改商品属性分类
     * @param id
     * @param name
     * @return
     */
    public void categoryUpdate(Long id, String name) {
        pmsProductAttributeApi.categoryUpdate(id,name);

    }
    /**
     * 删除单个商品属性分类
     * @param id
     * @return
     */
    public void categoryDelete(Long id) {
        pmsProductAttributeApi.categoryDelete(id);
    }


    /**
     * 获取所有商品属性分类及其下属性
     * @return
     */
    public List<ProductAttributeCategoryListWithAttrVo> categoryListWithAttr() {
        return pmsProductAttributeApi.categoryListWithAttr();
    }

    /**
     * 根据productCategoryId,获得attributeCategoryId,attributeId
     * @param productCategoryId
     * @return
     */
    public List<ProductAttributeProductVo> attrInfoProductCategoryId(Long productCategoryId) {
        return pmsProductAttributeApi. attrInfoProductCategoryId(productCategoryId);
    }
}
